import 'dart:math';
import 'package:intl/intl.dart';
import 'package:get/get.dart';

/// 阅读数转换 比如10w
String formatCharCount(int count) {
  if (count == null || count < 0 || count.isNaN) {
    return '0';
  }
  String strCount = count.toString();
  if (strCount.length >= 5) {
    // 如：123456 => 12
    String prefix = strCount.substring(0, strCount.length - 4);
    if (strCount.length == 5) {
      prefix += '.' + strCount[1];
    }
    if (strCount.length == 6) {
      prefix += '.' + strCount[2];
    }
    return prefix + 'w';
  }
  return strCount;
}
String getRandom(int num) {
    String alphabet = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
    String left = "";
    for (var i = 0; i < num; i++) {
//    right = right + (min + (Random().nextInt(max - min))).toString();
      left = left + alphabet[Random().nextInt(alphabet.length)];
    }
    return left;
  }
String getDateTime(DateTime date) {
  String dateString = DateFormat("yyyy-MM-dd").format(date).toString();
  DateTime today = DateTime.now();
  String todayStr = DateFormat("yyyy-MM-dd").format(today).toString();

  DateTime yesterday = today.add(new Duration(hours: -24));
  String yesterdayStr = DateFormat("yyyy-MM-dd").format(yesterday).toString();
  String dateStr;
  if (dateString == todayStr) {
    dateStr = DateFormat('HH:mm').format(date).toString();
  } else if (dateStr == yesterdayStr) {
    dateStr = "昨天" + DateFormat('HH:mm').format(date).toString();
  } else if (DateFormat("yyyy").format(date).toString() ==
      DateFormat("yyyy").format(today).toString()) {
    dateStr = DateFormat('MM-dd').format(date).toString() +
        " " +
        DateFormat('HH:mm').format(date).toString();
  } else {
    dateStr = dateString;
  }
  return dateStr;
}

String getAge(String brtStr) {
  DateTime brt = DateTime.parse(brtStr);
  int age = 0;
  DateTime dateTime = DateTime.now();
  if (dateTime.isBefore(brt)) {
    //出生日期晚于当前时间，无法计算
    return '出生日期不正確';
  }
  int yearNow = dateTime.year; //当前年份
  int monthNow = dateTime.month; //当前月份
  int dayOfMonthNow = dateTime.day; //当前日期

  int yearBirth = brt.year;
  int monthBirth = brt.month;
  int dayOfMonthBirth = brt.day;
  age = yearNow - yearBirth; //计算整岁数
  if (monthNow <= monthBirth) {
    if (monthNow == monthBirth) {
      if (dayOfMonthNow < dayOfMonthBirth) age--; //当前日期在生日之前，年龄减一
    } else {
      age--; //当前月份在生日之前，年龄减一
    }
  }
  return age.toString();
}

String getConstellation(String birthdayStr) {
  final String capricorn = '摩羯座'; //Capricorn 摩羯座（12月22日～1月20日）
  final String aquarius = '水瓶座'; //Aquarius 水瓶座（1月21日～2月19日）
  final String pisces = '双鱼座'; //Pisces 双鱼座（2月20日～3月20日）
  final String aries = '白羊座'; //3月21日～4月20日
  final String taurus = '金牛座'; //4月21～5月21日
  final String gemini = '双子座'; //5月22日～6月21日
  final String cancer = '巨蟹座'; //Cancer 巨蟹座（6月22日～7月22日）
  final String leo = '狮子座'; //Leo 狮子座（7月23日～8月23日）
  final String virgo = '处女座'; //Virgo 处女座（8月24日～9月23日）
  final String libra = '天秤座'; //Libra 天秤座（9月24日～10月23日）
  final String scorpio = '天蝎座'; //Scorpio 天蝎座（10月24日～11月22日）
  final String sagittarius = '射手座'; //Sagittarius 射手座（11月23日～12月21日）
  DateTime birthday = DateTime.parse(birthdayStr);
  print(birthday);
  int month = birthday.month;
  int day = birthday.day;
  String constellation = '';

  switch (month) {
    case DateTime.january:
      constellation = day < 21 ? capricorn : aquarius;
      break;
    case DateTime.february:
      constellation = day < 20 ? aquarius : pisces;
      break;
    case DateTime.march:
      constellation = day < 21 ? pisces : aries;
      break;
    case DateTime.april:
      constellation = day < 21 ? aries : taurus;
      break;
    case DateTime.may:
      constellation = day < 22 ? taurus : gemini;
      break;
    case DateTime.june:
      constellation = day < 22 ? gemini : cancer;
      break;
    case DateTime.july:
      constellation = day < 23 ? cancer : leo;
      break;
    case DateTime.august:
      constellation = day < 24 ? leo : virgo;
      break;
    case DateTime.september:
      constellation = day < 24 ? virgo : libra;
      break;
    case DateTime.october:
      constellation = day < 24 ? libra : scorpio;
      break;
    case DateTime.november:
      constellation = day < 23 ? scorpio : sagittarius;
      break;
    case DateTime.december:
      constellation = day < 22 ? sagittarius : capricorn;
      break;
  }

  return constellation;
}

/// 秒数转 时:分:秒
String secondsToTime(int seconds) {
  if (seconds == null || seconds <= 0 || seconds.isNaN) {
    return '00:00';
  }
  // 时分数
  int hours = 0;
  // 分钟数
  int minutes = 0;
  // 除整数分钟外剩余的秒数
  int remainingSeconds = 0;

  hours = (seconds / 60 / 60).floor();
  minutes = (seconds / 60 % 60).floor();
  remainingSeconds = seconds % 60;

  // 返回 时:分:秒
  return '${formatNumber(hours)}:${formatNumber(minutes)}:${formatNumber(remainingSeconds)}';
}

String changeSize(limit) {
  String size = "";
  //内存转换
  if (limit < 0.1 * 1024) {
    //小于0.1KB，则转化成B
    size = limit.toString();
    size = size.substring(0, size.indexOf(".") + 3) + "  B";
  } else if (limit < 0.1 * 1024 * 1024) {
    //小于0.1MB，则转化成KB
    size = (limit / 1024).toString();
    size = size.substring(0, size.indexOf(".") + 3) + "  KB";
  } else if (limit < 0.1 * 1024 * 1024 * 1024) {
    //小于0.1GB，则转化成MB
    size = (limit / (1024 * 1024)).toString();
    print(size.indexOf("."));
    size = size.substring(0, size.indexOf(".") + 3) + "  MB";
  } else {
    //其他转化成GB
    size = (limit / (1024 * 1024 * 1024)).toString();
    size = size.substring(0, size.indexOf(".") + 3) + "  GB";
  }
  return size;
}

/// 个数补零
String formatNumber(int count) {
  String strCount = count.toString();
  return strCount.length > 1 ? strCount : '0$strCount';
}

/// 随机获取指定返回内的数值
///
/// from [min] 含，to [max] 含
int getRandomRangeInt(int min, int max) {
  final Random random = new Random();
  return min + random.nextInt(max + 1 - min);
}

/// 转为 rpx 单位
///
/// [size] 设计稿上的大小
///
/// [width] 设计稿尺寸
double toRpx({double size = 0, double width = 750}) {
  // 原生：MediaQuery.of(context).size.width / 750;
  double rpx = Get.width / width;
  return size * rpx;
}

/// 网络图默认图
String networkImageToDefault(String src) {
  return src ??
      'https://pic1.zhimg.com/80/v2-6afa72220d29f045c15217aa6b275808_720w.jpg?source=1940ef5c';
}
